package com.cmwa.scbp.sys.permission.dataRole.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cmwa.scbp.base.annotation.MybatisDao;
import com.cmwa.scbp.base.mvc.dao.BaseDao;
import com.cmwa.scbp.base.mvc.entity.SearchParam;
import com.cmwa.scbp.sys.permission.dataAuthority.entity.RoleVo;

@MybatisDao
public interface RoleDao extends BaseDao<RoleVo> {
	
	/**
	 * 分页查询角色
	 * @author ex-weicb
	 * @createDate 2016年4月26日 下午6:10:00
	 * @param param
	 * @return
	 */
	public List<RoleVo> roleListPage(SearchParam param);

	/**
	 * 根据角色id查找角色
	 * @author ex-weicb
	 * @createDate 2016年4月27日 下午2:07:23
	 * @param roleId
	 * @return
	 */
	public RoleVo queryByRoleId(String roleId);

	/**
	 * 根据id查找共享角色信息
	 * @author ex-weicb
	 * @createDate 2016年4月27日 下午2:26:53
	 * @param roleId
	 * @return
	 */
	public List<RoleVo> queryShareInfoById(String roleId);

	/**
	 * 查找角色数量
	 * @author ex-weicb
	 * @createDate 2016年4月28日 下午1:52:24
	 * @param role
	 * @return
	 */
	public int queryRoleCount(RoleVo role);

	/**
	 * 保存角色
	 * @author ex-weicb
	 * @createDate 2016年4月28日 下午2:13:03
	 * @param role
	 */
	public void insert(RoleVo role);

	/**
	 * 查找角色
	 * @author ex-weicb
	 * @createDate 2016年4月28日 下午4:57:34
	 * @param role
	 * @return
	 */
	public List<RoleVo> queryRole(RoleVo role);

	/**
	 * 根据表名和角色id查找关联数量
	 * @author ex-weicb
	 * @createDate 2016年4月29日 上午10:07:52
	 * @param tableName
	 * @return
	 */
	public int queryRelationCountByTable(@Param("roleId")String roleId);

	/**
	 * 修改角色
	 * @author ex-weicb
	 * @createDate 2016年4月29日 上午10:34:39
	 * @param role
	 */
	public void updateRole(RoleVo role);

	/**
	 * 分享闭环校验
	 * @author ex-weicb
	 * @createDate 2016年4月29日 上午11:54:50
	 * @param roleId
	 * @return
	 */
	public String getClShareNamesByRoleId(String roleId);
	
	/**
	 * 查找角色集合
	 * @author ex-weicb
	 * @createDate 2016年5月3日 上午9:08:14
	 * @param param
	 * @return
	 */
	public List<RoleVo> queryRoleByCondition(SearchParam param);

	/**
	 * 根据操作角色ID获取数据角色
	 * @param operRoleId
	 * @return
	 */
	List<RoleVo> getDataRole(@Param(value="operRoleId") String operRoleId);
	
	/**
	  * 根据部门查找数据角色集合
	  * @param authorityVo
	  * @return
	  */
	List<RoleVo> queryRoleByDeptId(RoleVo role);
	
	/**
	 * 根据操作角色ID获取数据角色
	 * @param param
	 * @return
	 */
	List<RoleVo> getDataRoleListPage(SearchParam param);
	
}
